import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class biyeshixi11{

    // 合并方法：支持传入多个文件路径，输出合并后的文件
    public static void mergeCsvFiles(List<String> inputFiles, String outputFile) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {
            boolean isFirstFile = true;

            for (String filePath : inputFiles) {
                File file = new File(filePath);
                try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
                    String line;
                    // 第一份文件保留表头
                    if (isFirstFile) {
                        while ((line = reader.readLine()) != null) {
                            writer.write(line);
                            writer.newLine();
                        }
                        isFirstFile = false;
                    } else {
                        // 跳过表头，直接读数据行
                        reader.readLine();
                        while ((line = reader.readLine()) != null) {
                            writer.write(line);
                            writer.newLine();
                        }
                    }
                } catch (IOException e) {
                    System.err.println("读取文件失败: " + filePath);
                    e.printStackTrace();
                }
            }
            System.out.println("合并完成！输出文件: " + outputFile);
        } catch (IOException e) {
            System.err.println("写入合并文件失败");
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        // 拆分后的 3 个文件路径（根据实际文件名修改）
        List<String> inputFiles = new ArrayList<>();
        inputFiles.add("part_1.csv");
        inputFiles.add("part_2.csv");
        inputFiles.add("part_3.csv");

        // 合并后的输出文件
        String outputFile = "merged.csv";

        // 执行合并
        mergeCsvFiles(inputFiles, outputFile);
    }
}
